<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;padding: 0;
        }
        .box{
            width: 300px;height: 400px;border: 1px solid black;margin: 50px auto;
        }
        .msg{
            height: 300px;border-bottom: solid 1px black;overflow: auto;
        }
        .msg div{padding: 6px;border-radius: 6px;margin: 6px;max-width: 200px;clear: both;}
        .msg div:nth-child(2n){background: #99f;float: left;}
        .msg div:nth-child(2n-1){background: #6f6;float: right}


    </style>
</head>
<body>
    <div class="box">
        <div class="msg"></div>
        <div class="form">
            <textarea id="txt"></textarea>
            <input type="button" id="btn" value="发送">
        </div> 
    </div>
</body>
<script>
    // 获取元素
    var omsg=document.querySelector(".msg");
    var otxt=document.getElementById("txt");8
    var obtn=document.getElementById("btn");

// 事件执行函数
    // 鼠标点击事件
    obtn.onclick=function(){
        send();
    }

    // 键盘按下事件
        // 键盘事件只能添加给有焦点的元素
    otxt.onkeydown=function(eve){
        // 获取对象事件的兼容处理
        var e=eve||window.event;
        // 键盘的兼容处理
        var code=e.keyCode||e.which;

        if(code===13&&e.ctrlKey){
            send();
        }
    }


    // 创建事件的执行函数
    function send(){
        // 如果输入框为空，立即结束
        if(otxt.value==="")return;
        // 创建元素
        var div=document.createElement("div");
        // 给新创建的元素设置内容
        div.innerHTML=otxt.value;
        // 插入到指定父级
        omsg.appendChild(div);
        // 清空文本域的内容
        txt.value="";
        // 设置容器的滚动距离为，自身的总高度，保证最新消息显示在可视区域内
        omsg.scrollTop = omsg.scrollHeight;
    }
</script>
</html>